Skip to content

fix(dashboard): resolve dropdown popup positioning#36963

Merged
msyavuz merged 1 commit intoapache:masterfrom
reynoldmorel:fix/store-location-positioning
Jan 28, 2026
Merged

fix(dashboard): resolve dropdown popup positioning#36963
msyavuz merged 1 commit intoapache:masterfrom
reynoldmorel:fix/store-location-positioning

Conversation

@reynoldmorel
Copy link
Contributor

@reynoldmorel reynoldmorel commented Jan 8, 2026

SUMMARY

When zooming in any page (150% to 200% zoom), the dropdown filter popup was positioning over the dropdown input creating a bad user experience when manipulating the dropdown component.

The fix simply aligns the dropdown popup always below the dropdown input.

This fix will affect all the places that are using this dropdown component.

BEFORE/AFTER SCREENSHOTS OR ANIMATED GIF

BEFORE:

89550_1

The dropdown covers the input box, preventing any filtering or selection via typing. This breaks basic usability on smaller screens.

89550_2

AFTER

short_video_after.mov

TESTING INSTRUCTIONS

  1. Create or open a dashboard with a filter of type Value that has 100+ options.
  2. Open the filter dropdown on a screen smaller than 1080p resolution or simulate by increasing browser zoom (e.g., 150%).
  3. Observe how the dropdown overlaps the input box and becomes unresponsive to typing.
  4. Try to test the most important places where these dropdowns are used.

ADDITIONAL INFORMATION

  • Has associated issue: Dashboard Filter dropdown input obscured on smaller screens views #34135
  • Required feature flags:
  • Changes UI
  • Includes DB Migration (follow approval process in SIP-59)
    • Migration is atomic, supports rollback & is backwards-compatible
    • Confirm DB migration upgrade and downgrade tested
    • Runtime estimates and downtime expectations provided
  • Introduces new feature or API
  • Removes existing feature or API

@codeant-ai-for-open-source
Copy link
Contributor

CodeAnt AI is reviewing your PR.


Thanks for using CodeAnt! 🎉

We're free for open-source projects. if you're enjoying it, help us grow by sharing.

Share on X ·
Reddit ·
LinkedIn

@dosubot dosubot bot added the change:frontend Requires changing the frontend label Jan 8, 2026
@codeant-ai-for-open-source
Copy link
Contributor

Nitpicks 🔍

🔒 No security issues identified
⚡ Recommended areas for review

  • Overrides Prop
    The new hard-coded prop dropdownAlign={DROPDOWN_ALIGN_BOTTOM} is set after spreading ...props, which unconditionally overrides any dropdownAlign provided by callers. This prevents consumers from customizing alignment and may be surprising or break integrations that rely on a different alignment.

  • Type / API mismatch
    The new DROPDOWN_ALIGN_BOTTOM object is likely intended for Ant Design / rc-trigger alignment APIs. The shape uses numeric values (0/1) for overflow.adjustX/adjustY which may not match the expected types (often booleans) or the library's AlignType. Confirm the runtime API accepts these values and add an explicit type to the constant to avoid subtle runtime behavior differences across environments.

@codeant-ai-for-open-source
Copy link
Contributor

CodeAnt AI finished reviewing your PR.

@netlify
Copy link

netlify bot commented Jan 8, 2026

Deploy Preview for superset-docs-preview ready!

Name Link
🔨 Latest commit 7822c22
🔍 Latest deploy log https://app.netlify.com/projects/superset-docs-preview/deploys/6972298e9c941d00080c09a1
😎 Deploy Preview https://deploy-preview-36963--superset-docs-preview.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

Copy link
Contributor

@bito-code-review bito-code-review bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review Agent Run #6ec00e

Actionable Suggestions - 1
  • superset-frontend/packages/superset-ui-core/src/components/Select/constants.ts - 1
Review Details
  • Files reviewed - 2 · Commit Range: 3f38a44..3f38a44
    • superset-frontend/packages/superset-ui-core/src/components/Select/Select.tsx
    • superset-frontend/packages/superset-ui-core/src/components/Select/constants.ts
  • Files skipped - 0
  • Tools
    • Eslint (Linter) - ✔︎ Successful
    • Whispers (Secret Scanner) - ✔︎ Successful
    • Detect-secrets (Secret Scanner) - ✔︎ Successful

Bito Usage Guide

Commands

Type the following command in the pull request comment and save the comment.

  • /review - Manually triggers a full AI review.

  • /pause - Pauses automatic reviews on this pull request.

  • /resume - Resumes automatic reviews.

  • /resolve - Marks all Bito-posted review comments as resolved.

  • /abort - Cancels all in-progress reviews.

Refer to the documentation for additional commands.

Configuration

This repository uses Superset You can customize the agent settings here or contact your Bito workspace admin at evan@preset.io.

Documentation & Help

AI Code Review powered by Bito Logo

@reynoldmorel reynoldmorel force-pushed the fix/store-location-positioning branch 2 times, most recently from 6e73e3e to a164e50 Compare January 8, 2026 01:52
@bito-code-review
Copy link
Contributor

bito-code-review bot commented Jan 8, 2026

Code Review Agent Run #ba1917

Actionable Suggestions - 0
Review Details
  • Files reviewed - 2 · Commit Range: a164e50..a164e50
    • superset-frontend/packages/superset-ui-core/src/components/Select/Select.tsx
    • superset-frontend/packages/superset-ui-core/src/components/Select/constants.ts
  • Files skipped - 0
  • Tools
    • Eslint (Linter) - ✔︎ Successful
    • Whispers (Secret Scanner) - ✔︎ Successful
    • Detect-secrets (Secret Scanner) - ✔︎ Successful

Bito Usage Guide

Commands

Type the following command in the pull request comment and save the comment.

  • /review - Manually triggers a full AI review.

  • /pause - Pauses automatic reviews on this pull request.

  • /resume - Resumes automatic reviews.

  • /resolve - Marks all Bito-posted review comments as resolved.

  • /abort - Cancels all in-progress reviews.

Refer to the documentation for additional commands.

Configuration

This repository uses Superset You can customize the agent settings here or contact your Bito workspace admin at evan@preset.io.

Documentation & Help

AI Code Review powered by Bito Logo

@reynoldmorel reynoldmorel force-pushed the fix/store-location-positioning branch 2 times, most recently from fd1b92d to 05bbab3 Compare January 8, 2026 03:47
@pull-request-size pull-request-size bot added size/S and removed size/XS labels Jan 8, 2026
@reynoldmorel reynoldmorel force-pushed the fix/store-location-positioning branch from 05bbab3 to 4d73f0e Compare January 8, 2026 03:48
@bito-code-review
Copy link
Contributor

bito-code-review bot commented Jan 8, 2026

Code Review Agent Run #653b80

Actionable Suggestions - 0
Review Details
  • Files reviewed - 2 · Commit Range: 4d73f0e..4d73f0e
    • superset-frontend/packages/superset-ui-core/src/components/Select/Select.tsx
    • superset-frontend/packages/superset-ui-core/src/components/Select/constants.ts
  • Files skipped - 0
  • Tools
    • Eslint (Linter) - ✔︎ Successful
    • Whispers (Secret Scanner) - ✔︎ Successful
    • Detect-secrets (Secret Scanner) - ✔︎ Successful

Bito Usage Guide

Commands

Type the following command in the pull request comment and save the comment.

  • /review - Manually triggers a full AI review.

  • /pause - Pauses automatic reviews on this pull request.

  • /resume - Resumes automatic reviews.

  • /resolve - Marks all Bito-posted review comments as resolved.

  • /abort - Cancels all in-progress reviews.

Refer to the documentation for additional commands.

Configuration

This repository uses Superset You can customize the agent settings here or contact your Bito workspace admin at evan@preset.io.

Documentation & Help

AI Code Review powered by Bito Logo

@geido
Copy link
Member

geido commented Jan 8, 2026

For people who are going to QA this. The Select is used basically everywhere, so we might need to do a sanity check in most pages, including Modals and Popovers.

@reynoldmorel reynoldmorel force-pushed the fix/store-location-positioning branch from 4d73f0e to 81a9b68 Compare January 8, 2026 13:01
@reynoldmorel reynoldmorel requested a review from geido January 8, 2026 13:01
@codeant-ai-for-open-source
Copy link
Contributor

CodeAnt AI is running Incremental review


Thanks for using CodeAnt! 🎉

We're free for open-source projects. if you're enjoying it, help us grow by sharing.

Share on X ·
Reddit ·
LinkedIn

@reynoldmorel reynoldmorel requested a review from msyavuz January 8, 2026 13:01
@reynoldmorel reynoldmorel force-pushed the fix/store-location-positioning branch from 81a9b68 to 109b61c Compare January 8, 2026 13:07
@reynoldmorel reynoldmorel requested a review from msyavuz January 8, 2026 13:07
@msyavuz msyavuz added the 🎪 ⚡ showtime-trigger-start Create new ephemeral environment for this PR label Jan 8, 2026
@github-actions github-actions bot added 🎪 109b61c 🚦 building Environment 109b61c status: building and removed 🎪 ⚡ showtime-trigger-start Create new ephemeral environment for this PR labels Jan 8, 2026
@github-actions github-actions bot added 🎪 82389c6 🚦 running Environment 82389c6 status: running and removed 🎪 🎯 82389c6 Active environment pointer - 82389c6 is receiving traffic 🎪 109b61c 🤡 sadpandajoe Environment 109b61c requested by sadpandajoe 🎪 109b61c 📅 2026-01-15T18-21 Environment 109b61c created at 2026-01-15T18-21 🎪 109b61c 🚦 running Environment 109b61c status: running 🎪 109b61c 🌐 54.212.233.190:8080 Environment 109b61c URL: http://54.212.233.190:8080 (click to visit) labels Jan 16, 2026
@github-actions
Copy link
Contributor

🎪 Showtime deployed environment on GHA for 82389c6

Environment: http://35.92.213.236:8080 (admin/admin)
Lifetime: 48h auto-cleanup
Updates: New commits create fresh environments automatically

Copy link
Contributor

@bito-code-review bito-code-review bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review Agent Run #6c57cd

Actionable Suggestions - 1
  • superset-frontend/src/explore/components/SaveModal.tsx - 1
Additional Suggestions - 5
  • superset-frontend/src/explore/components/SaveModal.tsx - 2
    • Incorrect URL hash for 'Out of tab' · Line 323-325
      When 'Out of tab' is selected, the URL incorrectly appends '#OUT_OF_TAB', which doesn't correspond to a real tab. The condition should check that selectedTab.value exists and isn't 'OUT_OF_TAB' to avoid invalid navigation hashes.
      Code suggestion
       @@ -323,1 +323,1 @@
      -         if (this.state.selectedTab?.value) {
      +         if (this.state.selectedTab?.value && this.state.selectedTab.value !== 'OUT_OF_TAB') {
    • State inconsistency in error handling · Line 500-500
      When the tabs API fails or returns invalid data, selectedTab remains unchanged, potentially showing a stale selection. Reset it to undefined in error cases for consistent UI state.
  • tests/unit_tests/mcp_service/chart/tool/test_get_chart_data.py - 1
    • Test Logic Duplication · Line 27-153
      These tests duplicate the fallback logic from `get_chart_data` instead of testing the implementation. This approach won't catch bugs in the actual code since it reimplements the same logic. Consider refactoring to extract the metric/groupby logic into a helper and test the real function with proper mocks.
  • superset-frontend/packages/superset-ui-core/src/utils/html.test.tsx - 1
    • Inaccurate test description · Line 69-69
      The test name claims to verify 'all known HTML tags' but only tests 15 out of 58 tags in KNOWN_HTML_TAGS. This could mislead readers about test coverage. Consider renaming to 'various' or expanding to cover more/all tags if comprehensive testing is intended.
      Code suggestion
       @@ -69,1 +69,1 @@
      -  it('should return true for all known HTML tags', () => {
      +  it('should return true for various known HTML tags', () => {
  • superset/mcp_service/auth.py - 1
    • Function too complex: exceeds statement limit · Line 175-175
      The `mcp_auth_hook` function has 58 statements, exceeding the limit of 50. Consider extracting helper functions to reduce complexity, such as moving signature manipulation logic into a separate function.
      Code suggestion
       @@ -172,6 +172,28 @@
                logger.warning("Error in finally block: %s", e)
       
       
      +def _setup_wrapper_signature(wrapper: Any, tool_func: F) -> None:
      +    """Set up the wrapper function's signature, removing ctx parameter."""
      +    import inspect
      +    from fastmcp import Context as FMContext
      +
      +    tool_sig = inspect.signature(tool_func)
      +    has_var_positional = any(
      +        p.kind == inspect.Parameter.VAR_POSITIONAL for p in tool_sig.parameters.values()
      +    )
      +
      +    if not has_var_positional:
      +        new_params = []
      +        for _name, param in tool_sig.parameters.items():
      +            if param.annotation is FMContext or (
      +                hasattr(param.annotation, "__name__")
      +                and param.annotation.__name__ == "Context"
      +            ):
      +                continue
      +            new_params.append(param)
      +        wrapper.__signature__ = tool_sig.replace(parameters=new_params)
      +        if "ctx" in wrapper.__annotations__:
      +            del wrapper.__annotations__["ctx"]
      +
      +
        def mcp_auth_hook(tool_func: F) -> F:  # noqa: C901
            """
            Authentication and authorization decorator for MCP tools.
       @@ -280,28 +302,7 @@
            # Copy docstring from original function (not wrapper, which may have lost it)
            new_wrapper.__doc__ = tool_func.__doc__
       
      -    # Set __signature__ from the original function, but:
      -    # 1. Remove ctx parameter - FastMCP tools don't expose it to clients
      -    # 2. Skip if original has *args (parse_request output has its own handling)
      -    from fastmcp import Context as FMContext
      -
      -    tool_sig = inspect.signature(tool_func)
      -    has_var_positional = any(
      -        p.kind == inspect.Parameter.VAR_POSITIONAL for p in tool_sig.parameters.values()
      -    )
      -
      -    if not has_var_positional:
      -        # For functions without *args, preserve signature but remove ctx
      -        new_params = []
      -        for _name, param in tool_sig.parameters.items():
      -            # Skip ctx parameter - FastMCP tools don't expose it to clients
      -            if param.annotation is FMContext or (
      -                hasattr(param.annotation, "__name__")
      -                and param.annotation.__name__ == "Context"
      -            ):
      -                continue
      -            new_params.append(param)
      -        new_wrapper.__signature__ = tool_sig.replace(  # type: ignore[attr-defined]
      -            parameters=new_params
      -        )
      -
      -        # Also remove ctx from annotations to match signature
      -        if "ctx" in new_wrapper.__annotations__:
      -            del new_wrapper.__annotations__["ctx"]
      -    # For functions with *args (parse_request output), the signature
      -    # is already set by parse_request without ctx.
      +    _setup_wrapper_signature(new_wrapper, tool_func)
       
            return new_wrapper  # type: ignore[return-value]
Review Details
  • Files reviewed - 21 · Commit Range: e4ffd4f..82389c6
    • docs/yarn.lock
    • superset-frontend/packages/superset-ui-core/src/chart/components/StatefulChart.test.tsx
    • superset-frontend/packages/superset-ui-core/src/chart/components/StatefulChart.tsx
    • superset-frontend/packages/superset-ui-core/src/components/Select/Select.tsx
    • superset-frontend/packages/superset-ui-core/src/components/Select/constants.ts
    • superset-frontend/packages/superset-ui-core/src/components/Select/types.ts
    • superset-frontend/packages/superset-ui-core/src/utils/html.test.tsx
    • superset-frontend/packages/superset-ui-core/src/utils/html.tsx
    • superset-frontend/src/dashboard/constants.ts
    • superset-frontend/src/explore/components/ControlPanelsContainer.test.tsx
    • superset-frontend/src/explore/components/ControlPanelsContainer.tsx
    • superset-frontend/src/explore/components/SaveModal.test.jsx
    • superset-frontend/src/explore/components/SaveModal.tsx
    • superset-frontend/src/explore/types.ts
    • superset/mcp_service/auth.py
    • superset/mcp_service/chart/tool/get_chart_data.py
    • superset/mcp_service/chart/validation/runtime/__init__.py
    • superset/templates/superset/spa.html
    • tests/unit_tests/mcp_service/chart/tool/test_get_chart_data.py
    • tests/unit_tests/mcp_service/chart/validation/__init__.py
    • tests/unit_tests/mcp_service/chart/validation/test_runtime_validator.py
  • Files skipped - 7
    • docs/package.json - Reason: Filter setting
    • superset-frontend/package-lock.json - Reason: Filter setting
    • superset-frontend/package.json - Reason: Filter setting
    • superset-frontend/packages/superset-core/package.json - Reason: Filter setting
    • superset-frontend/packages/superset-ui-demo/package.json - Reason: Filter setting
    • superset-websocket/package-lock.json - Reason: Filter setting
    • superset-websocket/package.json - Reason: Filter setting
  • Tools
    • Whispers (Secret Scanner) - ✔︎ Successful
    • Detect-secrets (Secret Scanner) - ✔︎ Successful
    • Eslint (Linter) - ✔︎ Successful
    • MyPy (Static Code Analysis) - ✔︎ Successful
    • Astral Ruff (Static Code Analysis) - ✔︎ Successful

Bito Usage Guide

Commands

Type the following command in the pull request comment and save the comment.

  • /review - Manually triggers a full AI review.

  • /pause - Pauses automatic reviews on this pull request.

  • /resume - Resumes automatic reviews.

  • /resolve - Marks all Bito-posted review comments as resolved.

  • /abort - Cancels all in-progress reviews.

Refer to the documentation for additional commands.

Configuration

This repository uses Superset You can customize the agent settings here or contact your Bito workspace admin at evan@preset.io.

Documentation & Help

AI Code Review powered by Bito Logo

Comment on lines 541 to 547
} else {
const firstTab = treeData[0];
this.setState({
tabsData: treeData,
selectedTab: { value: firstTab.value, label: firstTab.title },
});
}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Potential undefined access

Accessing treeData[0] without checking if treeData is empty can lead to undefined errors when no tabs exist.

Code suggestion
Check the AI-generated fix before applying
Suggested change
} else {
const firstTab = treeData[0];
this.setState({
tabsData: treeData,
selectedTab: { value: firstTab.value, label: firstTab.title },
});
}
} else {
if (treeData.length > 0) {
const firstTab = treeData[0];
this.setState({
tabsData: treeData,
selectedTab: { value: firstTab.value, label: firstTab.title },
});
}
}
Citations

Code Review Run #6c57cd


Should Bito avoid suggestions like this for future reviews? (Manage Rules)

  • Yes, avoid them

Copy link
Contributor

@ramiroaquinoromero ramiroaquinoromero left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@github-actions github-actions bot removed 🎪 82389c6 🤡 msyavuz Environment 82389c6 requested by msyavuz 🎪 82389c6 📅 2026-01-16T18-59 Environment 82389c6 created at 2026-01-16T18-59 🎪 82389c6 🌐 35.92.213.236:8080 Environment 82389c6 URL: http://35.92.213.236:8080 (click to visit) 🎪 82389c6 🚦 running Environment 82389c6 status: running labels Jan 19, 2026
@eschutho
Copy link
Member

Hi @reynoldmorel it looks like you may need to rebase your branch before we can review. Thanks!

@reynoldmorel
Copy link
Contributor Author

reynoldmorel commented Jan 22, 2026

Hi @reynoldmorel it looks like you may need to rebase your branch before we can review. Thanks!

addressed

@reynoldmorel reynoldmorel force-pushed the fix/store-location-positioning branch from 82389c6 to 7822c22 Compare January 22, 2026 13:43
@github-actions github-actions bot added 🎪 🔒 showtime-blocked and removed doc Namespace | Anything related to documentation dependencies:npm 🎪 🔒 showtime-blocked labels Jan 22, 2026
@bito-code-review
Copy link
Contributor

bito-code-review bot commented Jan 22, 2026

Code Review Agent Run #13bf58

Actionable Suggestions - 0
Review Details
  • Files reviewed - 3 · Commit Range: 7822c22..7822c22
    • superset-frontend/packages/superset-ui-core/src/components/Select/Select.tsx
    • superset-frontend/packages/superset-ui-core/src/components/Select/constants.ts
    • superset-frontend/packages/superset-ui-core/src/components/Select/types.ts
  • Files skipped - 0
  • Tools
    • Eslint (Linter) - ✔︎ Successful
    • Whispers (Secret Scanner) - ✔︎ Successful
    • Detect-secrets (Secret Scanner) - ✔︎ Successful

Bito Usage Guide

Commands

Type the following command in the pull request comment and save the comment.

  • /review - Manually triggers a full AI review.

  • /pause - Pauses automatic reviews on this pull request.

  • /resume - Resumes automatic reviews.

  • /resolve - Marks all Bito-posted review comments as resolved.

  • /abort - Cancels all in-progress reviews.

Refer to the documentation for additional commands.

Configuration

This repository uses Superset You can customize the agent settings here or contact your Bito workspace admin at evan@preset.io.

Documentation & Help

AI Code Review powered by Bito Logo

@msyavuz msyavuz merged commit 43653d1 into apache:master Jan 28, 2026
73 checks passed
sadpandajoe pushed a commit that referenced this pull request Jan 28, 2026
@sadpandajoe sadpandajoe added the v6.0 Label added by the release manager to track PRs to be included in the 6.0 branch label Jan 28, 2026
sadpandajoe pushed a commit that referenced this pull request Jan 29, 2026
LevisNgigi pushed a commit to LevisNgigi/superset that referenced this pull request Feb 4, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

change:frontend Requires changing the frontend packages size/S v6.0 Label added by the release manager to track PRs to be included in the 6.0 branch 🎪 ⌛ 48h Environment expires after 48 hours (default)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants